import puppeteer from 'puppeteer'
import fs from "fs"
 
/**
 @param routes 预渲染路由地址
 */
const seoPrerender = (routes) => {
  return {
    name: "viteSeoPrerender",
    async closeBundle() {
      // 预渲染逻辑放这里，即打包完成后执行预渲染
      // 复制puppeteer官方示例
      const browser = await puppeteer.launch()
      const page = await browser.newPage()
      for (const key in routes) {
        // 遍历需渲染的路由
        // 这里先简单化把url固定，可通过先启动vite preview的方式取得访问地址和端口
        await page.goto("https://api.6ocbx.com/" + key)
        await page.setViewport({width: 1024, height: 768})
        const content = await page.content()
        const filePath = `./dist${key}/index.html` // 保存的html文件路径
        fs.writeFileSync(filePath, content)
      }
      await browser.close()
    }
  }
}
export default seoPrerender